package com.wgh.inventory.mapper;

import com.wgh.inventory.entity.Inventory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 库存Mapper接口
 */
@Mapper
public interface InventoryMapper extends BaseMapper<Inventory> {
    
    /**
     * 根据SKU ID查询库存
     * @param skuId SKU ID
     * @return 库存信息
     */
    Inventory selectBySkuId(@Param("skuId") Long skuId);
    
    /**
     * 扣减库存
     * @param skuId SKU ID
     * @param quantity 扣减数量
     * @return 扣减结果
     */
    int decreaseInventory(@Param("skuId") Long skuId, @Param("quantity") Integer quantity);
    
    /**
     * 增加库存
     * @param skuId SKU ID
     * @param quantity 增加数量
     * @return 增加结果
     */
    int increaseInventory(@Param("skuId") Long skuId, @Param("quantity") Integer quantity);
    
    /**
     * 锁定库存
     * @param skuId SKU ID
     * @param quantity 锁定数量
     * @return 锁定结果
     */
    int lockInventory(@Param("skuId") Long skuId, @Param("quantity") Integer quantity);
    
    /**
     * 解锁库存
     * @param skuId SKU ID
     * @param quantity 解锁数量
     * @return 解锁结果
     */
    int unlockInventory(@Param("skuId") Long skuId, @Param("quantity") Integer quantity);
    
    /**
     * 检查库存是否充足
     * @param skuId SKU ID
     * @param quantity 检查数量
     * @return 库存是否充足
     */
    boolean checkInventory(@Param("skuId") Long skuId, @Param("quantity") Integer quantity);
}